// 微信小程序web worker兼容性补丁
// 解决FrameworkError: 在onLoad阶段访问__wxConfig.useWebWorker可能取不到值

/**
 * 初始化web worker配置的默认值
 * 这个函数应该在应用程序的最早期阶段调用，确保在任何代码尝试访问__wxConfig.useWebWorker之前
 */
export function initWebWorkerConfig(): void {
  try {
    // 首先尝试直接在全局作用域中设置__wxConfig
    // @ts-ignore
    if (typeof globalThis !== 'undefined') {
      // @ts-ignore
      globalThis.__wxConfig = globalThis.__wxConfig || {};
      // @ts-ignore
      globalThis.__wxConfig.useWebWorker = globalThis.__wxConfig.useWebWorker || false;
    }
    
    // 兼容微信小程序环境
    // @ts-ignore
    if (typeof wx !== 'undefined') {
      // @ts-ignore
      wx.__wxConfig = wx.__wxConfig || {};
      // @ts-ignore
      wx.__wxConfig.useWebWorker = wx.__wxConfig.useWebWorker || false;
      
      // 在某些微信小程序版本中，__wxConfig可能直接挂在全局对象上
      // @ts-ignore
      if (typeof wx.getApp === 'function') {
        try {
          // @ts-ignore
          const app = wx.getApp();
          if (app) {
            // @ts-ignore
            app.globalData = app.globalData || {};
            // @ts-ignore
            app.globalData.__wxConfig = app.globalData.__wxConfig || {};
            // @ts-ignore
            app.globalData.__wxConfig.useWebWorker = app.globalData.__wxConfig.useWebWorker || false;
          }
        } catch (e) {
          console.log('WebWorker patch for wx app instance failed:', e);
        }
      }
    }
    
    // 兼容浏览器环境
    // @ts-ignore
    if (typeof window !== 'undefined') {
      // @ts-ignore
      window.__wxConfig = window.__wxConfig || {};
      // @ts-ignore
      window.__wxConfig.useWebWorker = window.__wxConfig.useWebWorker || false;
    }
    
    // 兼容Node.js环境
    // @ts-ignore
    if (typeof global !== 'undefined') {
      // @ts-ignore
      global.__wxConfig = global.__wxConfig || {};
      // @ts-ignore
      global.__wxConfig.useWebWorker = global.__wxConfig.useWebWorker || false;
    }
    
    // 为了确保完全覆盖，我们还可以尝试在其他可能的全局对象上设置
    try {
      // @ts-ignore
      self.__wxConfig = self.__wxConfig || {};
      // @ts-ignore
      self.__wxConfig.useWebWorker = self.__wxConfig.useWebWorker || false;
    } catch (e) {
      // 忽略错误，某些环境可能不支持self对象
    }
    
  } catch (error) {
    console.log('WebWorker compatibility patch initialization error:', error);
  }
}

// 立即执行初始化函数，确保在模块加载时就设置好默认值
initWebWorkerConfig();

// 导出工具函数，允许在需要时手动重新初始化
export default initWebWorkerConfig;